\documentclass[10.5pt, a4paper]{article}

\usepackage{xeCJK}
\newCJKfontfamily{\heiti}[AutoFakeBold={3.17}]{SimHei}
\usepackage{pifont}

\usepackage{geometry}
\geometry{
    left = 0.6in,
    right = 0.6in,
    top = 0.8in,
    bottom = 1.0in
}
\usepackage{amssymb,amsbsy,amsmath,xcolor,mathrsfs,graphicx}
\usepackage{listings}
\usepackage{tasks}
\settasks{
    label = \Alph*. ,
    label-width = 16pt
}

\renewcommand{\title}[3]{
    \begin{center}
        \Large\heiti #1~年~#2~月 Python~#3级考试
    \end{center}
}
\newcommand{\TimeAndName}[1]{
    \begin{center}
        考试时间:~#1~ 分钟 \qquad\qquad\qquad\qquad 姓名:\underline{\quad\quad\quad\quad}
    \end{center}
}

\begin{document}
    \lstset{
        language = python,
        keywordstyle = \color{orange}\bfseries,
        emph = {print,bool,chr,ord,sorted,float,type,oct,hex,abs,sum,len,int,open,list,map,
        str},
        emphstyle = \color{purple}\bfseries,
        showspaces = false,
        basicstyle = \ttfamily,
        morekeywords = {True,False}
    }

    \title{2021}{6}{一}
    
    \TimeAndName{60}
    
    \vspace{1cm}
    {\noindent\heiti 第一部分、单选题(共 25 题,每题 2 分,共50分.)}

    \begin{enumerate}
        % 1
        \item 下列程序运行的结果是?(\qquad)
        \begin{lstlisting}
            s = 'hello'
            print(s+'world')
        \end{lstlisting}
        \begin{tasks}(4)
            \task sworld
            \task helloworld
            \task hello
            \task world
        \end{tasks}
    
        % 2
        \item 下列选项中不符合Python语言变量命名规则的是?(\qquad)
        \begin{tasks}(4)
            \task Computer
            \task P
            \task 3\_1
            \task \_WO1
        \end{tasks}

        % 3
        \item 在Python中，运行\lstinline!9//2!，输出的结果是?(\qquad)
        \begin{tasks}(4)
            \task 3
            \task 4.5
            \task 4
            \task 4.0
        \end{tasks}
    
        % 4
        \item 下面哪一行代码的输出结果不是World2021?(\qquad)
        \begin{tasks}(2)
            \task \lstinline!print("World"+"2021")!
            \task \lstinline!print("World"+"20"+"21")!
            \task \lstinline!print("World"+2021)!
            \task \lstinline!print("World2021")!
        \end{tasks}

        % 5
        \item 在Python中，输入\lstinline!3*4**2!，运算结果是?(\qquad)
        \begin{tasks}(4)
            \task 144
            \task 24
            \task 48
            \task 6
        \end{tasks}

        % 6
        \item 关于比较运算符说法正确的是?(\qquad)
        
        \ding{172} !=表示为不等于，如果两个操作数不相等，则为False

        \ding{173} <=表示为小于等于，如果左边的数小于或等于右边的数，则为True

        \ding{174} 若a=2,b=5则a!=b为True
        \begin{tasks}(4)
            \task \ding{172}\ding{173}
            \task \ding{173}\ding{174}
            \task \ding{172}\ding{174}
            \task \ding{172}\ding{173}\ding{174}
        \end{tasks}

        % 7
        \item Python中的乘法是用哪个符号表示的?(\qquad)
        \begin{tasks}(4)
            \task \lstinline!*!
            \task \lstinline!X!
            \task \lstinline!x!
            \task \lstinline!\#!
        \end{tasks}

        % 8
        \item 以下哪个选项可以作为Python文件的后缀名?(\qquad)
        \begin{tasks}(4)
            \task .py
            \task .png
            \task .doc
            \task .pdf
        \end{tasks}

        % 9
        \item 要给三个整型变量a、b、c赋值为5，下面Python程序正确的是?(\qquad)
        \begin{tasks}(4)
            \task \lstinline!abc=5!
            \task \lstinline{a=5,b=5,c=5}
            \task \lstinline!a=b=c=5!
            \task \lstinline!a=5 b=5 c=5!
        \end{tasks}

        % 10
        \item 以下哪段程序能在画出三角形并隐藏turtle?(\qquad)
        \begin{tasks}(2)
            \task 
            \lstinline!import turtle! \\ 
            \lstinline!turtle.circle(150, steps=3)! \\
            \lstinline!turtle.hideturtle()! \\
            \lstinline!turtle.done()!

            \task 
            \lstinline!import turtle! \\ 
            \lstinline!turtle.circle(150, 3)! \\
            \lstinline!turtle.hideturtle()! \\
            \lstinline!turtle.done()!

            \task 
            \lstinline!import turtle! \\ 
            \lstinline!turtle.circle(3)! \\
            \lstinline!turtle.hideturtle()! \\
            \lstinline!turtle.done()!

            \task \lstinline!import turtle! \\ 
            \lstinline!turtle.circle(150,3,3)! \\
            \lstinline!turtle.hideturtle()! \\
            \lstinline!turtle.done()!
        \end{tasks}

        \newpage
        % 11
        \item turtle.home() 的作用是下列哪一种?(\qquad)
        \begin{tasks}(2)
            \task 移至初始坐标 (0,0)
            \task 移至初始坐标 (0,0)，并设置朝向为初始方向
            \task 移至屏幕左上角
            \task 设置朝向为初始方向
        \end{tasks}

        % 12
        \item 关于Turtle绘图，下列说法错误的是?(\qquad)
        \begin{tasks}
            \task 色彩处理时，可以使用彩色画笔pencolor()，也可以直接由color()方法更改目前画笔的颜色
            \task penup()指的是将笔提起，不会绘制任何图形
            \task 在选择画笔粗细时可以使用pensize()
            \task 在海龟绘图中，画布中央是(0，0)，往右$x$坐标值递减，往左$x$坐标值递增
        \end{tasks}

        % 13
        \item  在Python中，输入\lstinline!18/6//3!，输出结果为?(\qquad)
        \begin{tasks}(4)
            \task 1
            \task 1.0
            \task 9
            \task 9.0
        \end{tasks}

        % 14
        \item \lstinline!print(88-8)!的运行结果是?(\qquad)
        \begin{tasks}(4)
            \task 88
            \task 80
            \task 88-8
            \task 81
        \end{tasks}
        
        % 15
        \item 分析下列程序，说法错误的是?(\qquad)
        \begin{lstlisting}
            import turtle
            turtle.color('blue')
            turtle.fillcolor('yellow')
            turtle.begin_fill()
            turtle.circle(50)
            turtle.end_fill()
            turtle.forward(100)
            turtle.color('red', 'aqua')
            turtle.begin_fill()
            turtle.circle(50)
            turtle.end_fill()
        \end{lstlisting}
        \begin{tasks}
            \task turtle.color('blue')表示的含义为:设置轮廓和填充颜色均为"blue"
            \task turtle.fllcolor('yellow')表示的含义为:设置填充颜色为"yellow"
            \task 程序运行结果为:绘制两个圆，左边圆填充颜色为"yellow"，右边圆的颜色为"aqua"
            \task 最终绘制两个圆的轮廓颜色均为"blue"
        \end{tasks}

        % 16
        \item Python环境中，以下代码注释正确的是?(\qquad)
        \begin{tasks}(4)
            \task \lstinline!\#!这个是一个程序
            \task \lstinline!/这个是一个程序/!
            \task \lstinline!"这是一个程序'!
            \task \lstinline!?这是一个程序?!
        \end{tasks}

        % 17
        \item \lstinline!print(5%10+5)!的输出结果是?(\qquad)
        \begin{tasks}(4)
            \task 10
            \task 1/3
            \task 5.2
            \task 5
        \end{tasks}

        % 18
        \item 下列哪一个函数可以将海龟顺时针旋转?(\qquad)
        \begin{tasks}(4)
            \task left()
            \task right()
            \task back()
            \task forward()
        \end{tasks}

        % 19
        \item 在Python编程环境下，IDLE代表什么?(\qquad)
        \begin{tasks}(4)
            \task 编辑器
            \task 编译器
            \task 计算器
            \task 集成开发环境
        \end{tasks}

        % 20
        \item 如果某年的第1天也就是一月一日是星期一。星期一记作1，星期二记作2，以此类推，星期日记作0。要求这一年的第d天是星期几，下列哪一种方法可以实现?(\qquad)
        \begin{tasks}(4)
            \task \lstinline!d\%7!
            \task \lstinline!(d-1)\%7!
            \task \lstinline!(d-1)\%7+1!
            \task \lstinline!(d+1)\%7!
        \end{tasks}

        \newpage
        % 21
        \item 在初始状态下，执行以下命令后，turtle的坐标为?(\qquad)
        \begin{lstlisting}
            turtle.forward(10)
            turtle.left(90)
            turtle.forward(20)
        \end{lstlisting}
        \begin{tasks}(4)
            \task (10,0)
            \task (10,20)
            \task (10,30)
            \task (10,-20)
        \end{tasks}

        % 22
        \item 下列运算符中，哪一个不是比较运算符?(\qquad)
        \begin{tasks}(4)
            \task <
            \task >
            \task \lstinline{!=}
            \task =
        \end{tasks}

        % 23
        \item 运行如下代码段，输出结果正确的是?(\qquad)
        \begin{lstlisting}
            word1  = "o"
            word2 = "n"
            print(word2 +word1)
        \end{lstlisting}
        \begin{tasks}(4)
            \task on
            \task no
            \task word3
            \task word2word1
        \end{tasks}

        % 24
        \item 下面哪一个不是Python的保留字?(\qquad)
        \begin{tasks}(4)
            \task class
            \task if
            \task turtle
            \task or
        \end{tasks}

        % 25
        \item 下面哪个代码可以绘制一个直径为200的填充为红色，轮廓为蓝边的圆形?(\qquad)
        \begin{tasks}(2)
            \task 
            \lstinline!import turtle! \\
            \lstinline!turtle.pencolor("blue")! \\
            \lstinline!turtle.fillcolor("red")! \\
            \lstinline!turtle.begin_fill()! \\
            \lstinline!turtle.circle(200)! \\
            \lstinline!turtle.end_fill()!

            \task
            \lstinline!import turtle! \\
            \lstinline!turtle.pencolor("blue")! \\
            \lstinline!turtle.fillcolor("red")! \\
            \lstinline!turtle.begin_fill()! \\
            \lstinline!turtle.circle(100,360)! \\
            \lstinline!turtle.end_fill()!

            \task 
            \lstinline!import turtle! \\
            \lstinline!turtle.color("blue")! \\
            \lstinline!turtle.dot(200)! 

            \task
            \lstinline!import turtle! \\
            \lstinline!turtle.pencolor("blue")! \\
            \lstinline!turtle.fillcolor("red")! \\
            \lstinline!turtle.dot(100)! 
        \end{tasks}
    \end{enumerate}

    \vspace{1cm}
    {\noindent\heiti 第二部分、判断题(共 10 题,每题 2 分,共20分.)}
    \begin{enumerate}
        \setcounter{enumi}{25}
        % 26
        \item  name = "John"，这个赋值语句书写正确(\qquad)

        %27
        \item 执行turtle.hideturtle()命令隐藏海龟之后，再怎么移动也就不能在画布上画图了(\qquad)
        
        %28
        \item \lstinline!65-2*2==126!运行结果为True(\qquad)
  
        %29
        \item 一个字符串可以转化为任意数值(\qquad)
        
        %30
        \item 运行turtle.clear()命令，将清空turtle窗口中的内容，turtle的位置会重置到窗口中央(\qquad)
        
        %31
        \item Python中，“==”代表的是将左右两边的值进行比较，取平均值(\qquad)
        
        %32
        \item Word软件也可以用来编辑Python程序代码，也支持代码的调试和运行(\qquad)
        
        %33
        \item 在Python编程环境中，\lstinline!>>>!提示符表示进入Python交互式命令行编程模式(\qquad)
        
        %34
        \item Python3中的单引号' '和双引号" "的作用是一样的(\qquad)
        
        %35
        \item 运行以下代码时会提示出错(\qquad)
        \begin{lstlisting}
            Python = "3.5.2"
            print(Python)
        \end{lstlisting}
    \end{enumerate}

    \newpage
    {\noindent\heiti 第三部分、编程题(共 2 题,共30分.)}
    \begin{enumerate}
        \setcounter{enumi}{35}
        
        % 36
        \item 求长方形的面积与周长.要求如下:
        \begin{tasks}[label=(\arabic*)]
            \task 程序开始运行后，输入长方形的长（a），然后再输入长方形的宽（b）；
            \task 程序会根据输入的数字给出长方形的面积和长方形的周长；
            \task 输出长方形的面积和周长，并且注明是面积还是和周长.
        \end{tasks}
        \vfill

        %37
        \item 绘制如下图形，相关参数及要求如下：
        
        \begin{figure}[htbp]
            \begin{minipage}{.6\textwidth}
                \begin{tasks}[label=(\arabic*)]
                    \task 画笔起始位置不限，但是整个图形必须要能够在画布中呈现；
                    \task 大的正方形由四个小正方形组成；
                    \task 每个小正方形的边长均为100像素；
                    \task 左上角和右下角的正方形填充颜色均为黑色；
                    \task 所有的线条颜色均为黑色；
                    \task 绘制完成后，隐藏画笔.
                \end{tasks}
            \end{minipage}
            \begin{minipage}{.35\textwidth}
                \centering
                \includegraphics[width=.6\textwidth]{37.png}
            \end{minipage}
        \end{figure}
        
        \vfill
    \end{enumerate}

    \newpage
    \begin{center}
        \Huge \heiti 参考答案
    \end{center}

        \begin{tasks}[label=\arabic*.](5)
            \task B
            \task C
            \task C
            \task C
            \task C

            \task B
            \task A
            \task A
            \task C
            \task A

            \task B
            \task D
            \task B
            \task B
            \task D

            \task A
            \task A
            \task B
            \task D
            \task A

            \task B
            \task D
            \task B
            \task C
            \task B

            \task $\checkmark$
            \task $\checkmark$
            \task $\times$
            \task $\times$
            \task $\times$

            \task $\times$
            \task $\times$
            \task $\checkmark$
            \task $\checkmark$
            \task $\times$
        \end{tasks}

        \begin{enumerate}
            \setcounter{enumi}{35}
            \item \begin{lstlisting}
                a = int(input("请输入长方形的长:"))
                b = int(input("请输入长方形的宽:"))
                print("长方形的周长是:", 2*(a+b))
                print("长方形的面积是:", a*b)
            \end{lstlisting}

            \item \begin{lstlisting}
                import turtle

                turtle.color("black", "black")
                for i in range(4):
                    turtle.fd(100)
                    turtle.left(90)

                turtle.begin_fill()
                turtle.seth(90)
                for i in range(4):
                    turtle.fd(100)
                    turtle.left(90)
                turtle.end_fill()

                turtle.seth(180)
                for i in range(4):
                    turtle.fd(100)
                    turtle.left(90)

                turtle.begin_fill()
                turtle.seth(270)
                for i in range(4):
                    turtle.fd(100)
                    turtle.left(90)
                turtle.end_fill()

                turtle.hideturtle()
                turtle.done()
            \end{lstlisting}
        \end{enumerate}
\end{document}